package base;

import java.util.ArrayList;
import java.util.Arrays;
import negocio.bd.BDAlmacenEquipos;
import negocio.bd.BDRecogidas;

/**
 * Clase que representa el almacén dentro del cual se recogen los equipos.
 * @author Efren
 * @version 0.0.1
 * @since 03/02/2013
 */
public class Almacen {
    /** Variable que representa las ordenes de recogida de equipos pendientes de entrar en el almacen*/
    private static ArrayList<RecogidaEquipos> ordenesPendientes;
    /** Variable que representa las equipos que se encuentran en el almacen*/
    private static ArrayList<Equipo> equiposAlmacenados;
    
    /**
     * Constructor por defecto.
     */
    public Almacen(){
        if (ordenesPendientes == null){
            ordenesPendientes = new ArrayList<>(0);
            //Recuperar datos
            ordenesPendientes.addAll(Arrays.asList(BDRecogidas.obtenerNoEntregados()));
        }
        if (equiposAlmacenados== null){
            equiposAlmacenados = new ArrayList<>(0);
            //Recuperar
            equiposAlmacenados.addAll(Arrays.asList(BDAlmacenEquipos.obtenerTodos()));
        }
    }
    /**
     * Añade una nueva orden de recogida para un equipo.
     * @param orden orden de recogida que se desea añadir.
     * @return verdadero si se ha añadido correctamente y falso en caso contrario.
     */
    public boolean addOrdenRecogida(RecogidaEquipos orden){
        return Almacen.ordenesPendientes.add(orden);
    }
    /**
     * Quita una orden de recogida de la lista. 
     * @param orden orden que se desea eliminar de la lista.
     * @return verdadero si se ha eliminado correctamente y falso en caso contrario.
     */
    public boolean removeOrdenRecogida(RecogidaEquipos orden){
        return Almacen.ordenesPendientes.remove(orden);
    }
    /**
     * Añade un equipo al almacen.
     * @param equipo equipo a añadir al almacen.
     * @return verdadero si se ha añadido correctamente y falso en caso contrario.
     */
    public boolean addEquipo(Equipo equipo){
        return Almacen.equiposAlmacenados.add(equipo);
    }
    /**
     * Quita un equipo del almacen.
     * @param equipo equipo a retirar del almacen.
     * @return verdadero si se ha quitado correctamente y falso en caso contrario.
     */
    public boolean removeEquipo(Equipo equipo){
        return Almacen.equiposAlmacenados.remove(equipo);
    }
}
